// es5创建类和继承
function Parent(name) {
    // 实例属性
    this.name = name
}
// 原型方法
Parent.prototype.getName = function () {
    console.log(this.name)
}
// 定义静态属性和方法，静态->不需要new
Parent.ts1 = 07
Parent.tsfn = function () {
    console.log(this)
}
console.log('静态属性和方法', Parent.ts1, Parent.tsfn())
// es5继承
// 继承实例属性和方法
function Child(name) {
    // 继承父类属性，this指向子类
    Parent.call(this, name)
}
// 继承原型属性和方法
// Child.prototype = new Parent('x')
Child.prototype = Object.create(Parent.prototype, {
    constructor: {
        value: Child
    }
})
// ES6 class关键字创建类和继承
// 创建一个父类
class Par {
    constructor(name) {
        this.name = name
    }
    getName() {
        console.log(this.name)
    }
}
// 继承
class Chi extends Par {
    constructor(name) {
        super(name)
        this.name = name
        this.age = 19
        this.fn = () => {
            console.log(this)
        }
    }
    test = 2020
    obj = {
        s: 13
    }
    fnc = () => {
        console.log(this)
    }
    // 定义静态属性和方法,使用关键字static
    static sta2 = 909
    static stafn2 = () => {
        console.log(Chi.sta2)
    }
    getAge() {
        console.log(this.age)
    }
}
// 定义静态属性和方法
Chi.sta = 14
Chi.stafn = () => {
    console.log(this, Chi.sta)
    return 112112
}

let ch = new Chi('火星')
console.log(ch, Chi.stafn())